package vip.liux.backend.application.service.account;

import vip.liux.backend.application.service.account.dtos.*;

public interface AccountAppService {

    /**
     * 注册新用户
     * @param input 注册信息
     */
    void register(RegisterDto input);

    /**
     * 发送密码重置码
     * @param input 密码重置码信息
     */
    void sendPasswordResetCode(SendPasswordResetCodeDto input);

    /**
     * 重置密码
     * @param input 重置密码信息
     */
    void resetPassword(ResetPasswordDto input);

    /**
     * 发送手机号确认令牌
     * @param input 手机号确认令牌信息
     */
    void sendPhoneNumberConfirmationToken(SendPhoneNumberConfirmationTokenDto input);

    /**
     * 发送邮箱确认令牌
     * @param input 邮箱确认令牌信息
     */
    void sendEmailConfirmationToken(SendEmailConfirmationTokenDto input);

    /**
     * 确认手机号
     * @param input 确认手机号信息
     */
    void confirmPhoneNumber(ConfirmPhoneNumberInput input);

    /**
     * 确认邮箱
     * @param input 确认邮箱信息
     */
    void confirmEmail(ConfirmEmailInput input);

    /**
     * 设置用户头像
     * @param input 用户头像信息
     */
    void setProfilePicture(ProfilePictureInput input);

    /**
     * 根据ID获取用户头像
     * @param id 头像ID
     * @return 用户头像信息
     */
    ProfilePictureSourceDto getProfilePicture(Long id);

    /**
     * 发送邮箱安全码
     * @param input 邮箱安全码信息
     */
    void sendEmailSecurityCode(SendEmailSecurityCodeDto input);

    /**
     * 发送手机安全码
     * @param input 手机安全码信息
     */
    void sendPhoneSecurityCode(SendPhoneSecurityCodeDto input);
}